home *** CD-ROM | disk | FTP | other *** search
- //=--------------------------------------------------------------------------=
- // ButtonPPG.Cpp
- //=--------------------------------------------------------------------------=
- // Copyright 1995 Microsoft Corporation. All Rights Reserved.
- //
- // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
- // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
- // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
- // PARTICULAR PURPOSE.
- //=--------------------------------------------------------------------------=
- //
- // property page implementations for Button control.
- //
- #include "IPServer.H"
-
- #include "LocalObj.H"
- #include "ButtonPPG.H"
- #include "ButtonCtl.H"
- #include "Resource.H"
- #include "Util.H"
-
-
- // for ASSERT and FAIL
- //
- SZTHISFILE
-
- //=--------------------------------------------------------------------------=
- // Property Page messages
- //=--------------------------------------------------------------------------=
- // in addition to regular windows messages you'll receive for a dialog box,
- // you'll receive the following messages in your property page implementation:
- //
- // PPM_NEWOBJECTS:
- // wParam = 0;
- // lParam = (LPARAM)(HRESULT *)hr
- //
- // - in this message, you should call FirstControl() to get a pointer to a
- // control, and initialize the values in the property page dialog with
- // values from the control object. put results from the operation in
- // the HRESULT pointed to by LPARAM.
- //
- // PPM_APPLY:
- // wParam = 0;
- // lParam = (LPARAM)(HRESULT *)hr
- //
- // - this message is sent to your dialog whenever the user clicks APPLY or OK
- // in the dialog. you should have a loop with the following code in it:
- //
- // for (pUnk = FirstControl(&dwCookie) ; pUnk; pUnk = NextControl(&dwCookie)) {
- // hr = pUnk->QueryInterface(IID_IMyCtlInterface, (void **)&pMyCtl);
- // // set properties here!!!
- // }
- //
- // call PropPageException() if there is an error while setting propertites
- // to show the exception set up by the property set routine.
- //
- // PPM_EDITPROPERTY:
- // wParam = dispid
- // lParam = (LPARAM)(HRESULT *)hr
- //
- // - sent to your dialog when somebody wants you to set the focus to a specific
- // property [typically, one will see a call to this when one returns a page
- // from IPerPropertyBrowsing::MapPropertyToPage]. you can use this
- // to bring up dialogs, or do whatever flaps your flagella.
- //
-
-
- //=--------------------------------------------------------------------------=
- // CButtonGeneralPage::Create
- //=--------------------------------------------------------------------------=
- // global static creation function.
- //
- // Parameters:
- // IUnknown * - [in] controlling unknown
- //
- // Output:
- // IUnknown * - new prop page.
- //
- // Notes:
- //
- IUnknown *CButtonGeneralPage::Create
- (
- IUnknown *pUnkOuter
- )
- {
- return (IUnknown *)new CButtonGeneralPage(pUnkOuter);
- }
-
- //=--------------------------------------------------------------------------=
- // CButtonGeneralPage::CButtonGeneralPage
- //=--------------------------------------------------------------------------=
- // constructor.
- //
- // Parameters:
- // IUnknown * - [in] controlling unknown.
- //
- // Notes:
- //
- CButtonGeneralPage::CButtonGeneralPage
- (
- IUnknown *pUnkOuter
- )
- : CPropertyPage(pUnkOuter, OBJECT_TYPE_PPGBUTTONGENERAL)
- {
- // initialize local variables here.
- }
-
- //=--------------------------------------------------------------------------=
- // CButtonGeneralPage::~CButtonGeneralPage
- //=--------------------------------------------------------------------------=
- // destructor.
- //
- // Notes:
- //
- CButtonGeneralPage::~CButtonGeneralPage()
- {
- // clean up
- }
-
- //=--------------------------------------------------------------------------=
- // CButtonGeneralPage::DialogProc
- //=--------------------------------------------------------------------------=
- // our dialog proc.
- //
- // Parameters:
- // - see win32sdk docs on DialogProc
- //
- // Notes:
- //
- BOOL CButtonGeneralPage::DialogProc
- (
- HWND hwnd,
- UINT msg,
- WPARAM wParam,
- LPARAM lParam
- )
- {
- switch (msg) {
-
- // we've been given some new objects, so go and re-set up the dialog page.
- //
- case PPM_NEWOBJECTS:
- {
- HRESULT hr;
- IButton *pButton;
- IUnknown *pUnk;
- DWORD dwDummy;
- BSTR bstr;
-
- pUnk = FirstControl(&dwDummy);
- if (!pUnk) return FALSE;
-
- hr = pUnk->QueryInterface(IID_IButton, (void **)&pButton);
- if (FAILED(hr)) return FALSE;
-
- pButton->get_Caption(&bstr);
- MAKE_ANSIPTR_FROMWIDE(psz, bstr);
- SetDlgItemText(hwnd, IDC_CAPTION, psz);
- SysFreeString(bstr);
-
- pButton->Release();
- }
- return TRUE;
-
- case PPM_APPLY:
- {
- IButton *pButton;
- IUnknown *pUnk;
- HRESULT hr;
- DWORD dwCookie;
- BSTR bstr;
- char szTmp[120];
-
- // get all the controls we have to update.
- //
- for (pUnk = FirstControl(&dwCookie) ; pUnk; pUnk = NextControl(&dwCookie)) {
- hr = pUnk->QueryInterface(IID_IButton, (void **)&pButton);
- if (FAILED(hr)) continue;
-
- GetDlgItemText(hwnd, IDC_CAPTION, szTmp, 128);
- bstr = BSTRFROMANSI(szTmp);
- ASSERT(bstr, "Maggots!");
- pButton->put_Caption(bstr);
- SysFreeString(bstr);
- pButton->Release();
- }
- }
- return TRUE;
-
- case WM_COMMAND:
- switch (LOWORD(wParam)) {
- case IDC_CAPTION:
- if (HIWORD(wParam) == EN_CHANGE)
- MakeDirty();
- }
- break;
- }
-
- return FALSE;
- }
-
-